home *** CD-ROM | disk | FTP | other *** search
-
- #include "mui_ascs.h"
-
- int CXBRK(void) { return(0); }
- int _CXBRK(void) { return(0); }
- void chkabort(void) {}
- long __OSlibversion = 37;
-
- /* ------------------------------------------------------------------- */
- /* for cback.o startup */
- /* ------------------------------------------------------------------- */
-
- long __stack = 4096;
- char *__procname = ASCSEND_VERSION;
- long __priority = 0L;
- long __BackGroundIO = 0;
- extern BPTR _Backstdout;
-
- /********************************************************************/
- /* Für den Filerequester */
- /********************************************************************/
-
- struct TagItem FRTags[] =
- {
- ASL_Hail,(ULONG)"ASCII-SEND: Datei auswählen",
- ASL_FuncFlags,0L,
- ASL_Pattern,(ULONG)"~(#?.info)",
- ASL_Dir,NULL,
- ASL_File,NULL,
- ASL_Window,NULL,
- TAG_DONE,0L
- };
-
- /****************************************************************/
- /* Var's */
- /****************************************************************/
-
- struct Library *MUIMasterBase;
- struct Library *LocalBase;
-
- enum IDs
- {
- ID_DUMMY,
- ID_SAVE,
- ID_INFO,
- ID_LOAD,
- ID_OPENWD,
- ID_CLOSEWD,
- ID_QUIT,
- ID_INSERTFILE,
- ID_FILESELECT,
- ID_FILEREQ,
- ID_CHANGE_FILEREQ,
- ID_CHANGE_INFOREQ,
- ID_CHANGE_POPKEY,
- ID_CHANGE_STOPKEY,
- ID_CHANGE_DELAY,
- ID_CHANGE_DELAYCHAR,
- ID_STOPKEY,
- ID_QUIT_SILENT,
- ID_DOUBLESTART,
- ID_EDITFILE,
- ID_RECSTART,
- ID_RECSTOP,
- ID_RECFILE,
- ID_CHANGE_RECSTART,
- ID_CHANGE_RECSTOP,
- ID_CHANGE_HANDLER_PRI,
- ID_EDIT_RECFILE,
- ID_AUTORECSTART,
- ID_AUTORECSTOP,
- ID_AUTOHOTKEY,
- ID_AUTOFILEREQKEY,
- ID_AUTOPOPKEY,
- ID_AUTOSTOPKEY,
- ID_AUTOINFOKEY,
- };
-
- struct NewMenu menu_list[] =
- {
- { NM_TITLE,NULL,0,0,0,0},
- { NM_ITEM, NULL,"R",0,0,(APTR)ID_LOAD},
- { NM_ITEM, NULL,"I",0,0,(APTR) ID_SAVE},
- { NM_ITEM, NM_BARLABEL,0,0,0,0},
- { NM_ITEM, NULL,"?",0,0,(APTR) ID_INFO},
- { NM_ITEM, NM_BARLABEL,0,0,0,0},
- { NM_ITEM, NULL, "H",0,0,(APTR) ID_CLOSEWD},
- { NM_ITEM, NULL, "Q",0,0,(APTR) ID_QUIT},
- NULL,
- };
-
-
- UBYTE displayline[STRMAXLEN];
- UBYTE wtitle[STRMAXLEN];
- UBYTE requestpath[STRMAXLEN];
- UBYTE requestfile[STRMAXLEN];
-
- struct hotkey ins;
- struct hotkey *insert_key = &ins;
- ULONG from_inside;
- ULONG signals;
- ULONG NextID = CXID_BASE;
- ULONG filesize;
- ULONG filepos;
- struct Catalog *ascs_catalog;
- struct Locale *ascs_locale;
- ULONG recording;
- ULONG from_main = FALSE;
- APTR from_main_object;
-
- struct IOStdReq *s_HandlerIO;
- struct MsgPort *s_InputPort;
- BYTE s_device;
-
- UBYTE *locale_strings[] =
- {
- "Projekt",
- "Einstellungen zurücksetzen",
- "Icon erzeugen",
- "Info",
- "Fenster schliessen",
- /*5*/ "Beenden...",
- "Datei auswählen...",
- "Linke AMIGA-Taste",
- "Rechte AMIGA-Taste",
- "Keine ALT Taste",
- /*10*/ "Jede ALT-Taste ",
- "Linke ALT-Taste",
- "Rechte ALT-Taste",
- "Keine SHIFT Taste",
- "Jede SHIFT-Taste",
- /*15*/ "Linke SHIFT-Taste",
- "Rechte SHIFT-Taste",
- "Sendet Textfiles als InputEvents",
- "Tasten",
- "Übernehmen",
- /*20*/ "Abbruch",
- "Datei:",
- "Edieren",
- "Neu",
- "Entfernen",
- /*25*/ "Spezielle Tasten",
- "Verzögerungen",
- "Zeilen",
- "Einzelzeichen",
- "Ja|*Nein",
- /*30*/ "Wirklich beenden ?",
- "*Na gut",
- "Beenden|*Weiter",
- "Buchstaben",
- "Aufnahme",
- /*35*/ "Start",
- "Stop",
- "Datei",
- "Min. Delay",
- "Priorität",
- /*40*/ "Mit Mausbuttons",
- "Mit Pausen",
- "Zeichen",
- "Bitte eine Taste/Tastenkombination drücken",
- };
- /*********************************************************************/
- /* Hooks */
- /*********************************************************************/
-
- struct Hook construct_keys = {
- {NULL, NULL},
- (void *)construct_key_func,
- NULL, NULL
- };
-
- struct Hook destruct_keys = {
- {NULL, NULL},
- (void *)destruct_key_func,
- NULL, NULL
- };
-
- struct Hook display_keys = {
- {NULL, NULL},
- (void *)display_key_func,
- NULL, NULL
- };
-
- struct Hook compare_keys = {
- {NULL, NULL},
- (void *)compare_func,
- NULL, NULL
- };
-
- struct Hook cxmsg = {
- {NULL,NULL},
- (void *)cxmsg_broker_func,
- NULL,NULL
- };
-
- struct Hook rx_send = {
- {NULL, NULL},
- (void *)rx_send_func,
- NULL, NULL
- };
-
- struct Hook rx_activate = {
- {NULL, NULL},
- (void *)rx_activate_func,
- NULL, NULL
- };
-
- struct Hook rx_activate_screen = {
- {NULL, NULL},
- (void *)rx_activate_screen_func,
- NULL, NULL
- };
-
- struct Hook rx_setkey = {
- {NULL, NULL},
- (void *)rx_setkey_func,
- NULL, NULL
- };
- struct Hook rx_remkey = {
- {NULL, NULL},
- (void *)rx_remkey_func,
- NULL, NULL
- };
-
- struct Hook rx_remall = {
- {NULL, NULL},
- (void *)rx_remall_func,
- NULL, NULL
- };
-
- struct Hook rx_set = {
- {NULL, NULL},
- (void *)rx_set_func,
- NULL, NULL
- };
- struct Hook rx_delay = {
- {NULL, NULL},
- (void *)rx_delay_func,
- NULL, NULL
- };
-
- struct Hook rx_delaychar = {
- {NULL, NULL},
- (void *)rx_delaychar_func,
- NULL, NULL
- };
-
- struct Hook rx_sendstring = {
- {NULL, NULL},
- (void *)rx_sendstring_func,
- NULL, NULL
- };
-
- struct Hook rx_recfile = {
- {NULL, NULL},
- (void *)rx_recfile_func,
- NULL, NULL
- };
-
- struct Hook rx_rec_opts = {
- {NULL, NULL},
- (void *)rx_rec_opts_func,
- NULL, NULL
- };
-
-
- /*********************************************************************/
- /* Objekte */
- /*********************************************************************/
-
- APTR app;
- APTR window;
- APTR key_lv;
- APTR key_list;
- APTR special_list;
- APTR newkey, newkeystring,delkey, filestring;
- APTR filerequest_string, popup_string, stop_string,info_string,popfile;
- APTR popfilebutton;
- APTR delay_int,delaychar_int;
- APTR pop_hotkey,popkey_button;
- APTR edit_button,edit_popup,edit_string;
- APTR rec_start,rec_stop,rec_file,pop_recfile;
- APTR rec_min_delay,rec_handler_pri,rec_include_mb,rec_include_delay;
- APTR edit_recfile,rec_max;
- APTR auto_recstart,auto_recstop;
- APTR press_a_key,t;
- APTR autopopkey,autoinfokey,autofilereqkey,autostopkey;
- APTR rec_max_on;
- /****************************************************************/
- /* Arexx-Commands */
- /****************************************************************/
-
- struct MUI_Command rx_cmd[] =
- {
- {"activate_window" ,"WINDOW/A",1,&rx_activate},
- {"activate_screen" ,"SCREEN/A",1,&rx_activate_screen},
- {"closewindow" ,MC_TEMPLATE_ID,ID_CLOSEWD,NULL},
- {"delay" ,"TICKS/N/A",1,&rx_delay},
- {"delaychar" ,"TICKS/N/A",1,&rx_delaychar},
- {"infokey" ,MC_TEMPLATE_ID,ID_INFO,NULL},
- {"openwindow" ,MC_TEMPLATE_ID,ID_OPENWD,NULL},
- {"saveicon" ,MC_TEMPLATE_ID,ID_SAVE,NULL},
- {"send" ,"FILE/A",1,&rx_send},
- {"string" ,"STRING/M/A",1,&rx_sendstring},
- {"set" ,"POPKEY/S,REQUESTKEY/S,INFOKEY/S,STOPKEY/S,RECSTARTKEY/S,RECSTOPKEY/S,KEY/M/A",7,&rx_set},
- {"setkey" ,"FILE/A,KEY/M/A",2,&rx_setkey},
- {"stopkey" ,MC_TEMPLATE_ID,ID_STOPKEY,NULL},
- {"remove" ,"KEY/M/A",1,&rx_remkey},
- {"remove_all" ,"",0,&rx_remall},
- {"reset" ,MC_TEMPLATE_ID,ID_LOAD,NULL},
- {"requestkey" ,MC_TEMPLATE_ID,ID_FILEREQ,NULL},
- {"start_rec" ,MC_TEMPLATE_ID,ID_RECSTART,NULL},
- {"stop_rec" ,MC_TEMPLATE_ID,ID_RECSTOP,NULL},
- {"recfile" ,"FILE/M/A",1,&rx_recfile},
- {"rec_options" ,"MIN_DELAY/N,PRI/N,MOUSEBUTTONS/S,DELAYS/S,MAXCHAR/N,ON/S",4,&rx_rec_opts},
- {NULL,NULL,NULL,NULL}
- };
-
- /*********************************************************************/
- /* Main */
- /*********************************************************************/
-
- void __stdargs main(int argc,char **argv)
- {
- BOOL running = TRUE;
- init();
-
- /*******************************************************************/
- /* Objekte erstellen */
- /*******************************************************************/
-
- app = ApplicationObject,
- MUIA_Application_Title , "ASCII_SEND",
- MUIA_Application_Version , ASCSEND_VERSION,
- MUIA_Application_Copyright , "FREEWARE von Lunqal%%MAB@wsb.freinet.de",
- MUIA_Application_Author , "Dr. Flame (VEG)Lunqual",
- MUIA_Application_Description, GETSTR(17),
- MUIA_Application_Base , "ASCSEND",
- MUIA_Application_Menu, menu_list,
- MUIA_Application_BrokerHook, &cxmsg,
- MUIA_Application_SingleTask, TRUE,
- MUIA_Application_Commands , rx_cmd,
- Child,special_list = ListObject,
- MUIA_List_ConstructHook, &construct_keys,
- MUIA_List_DestructHook, &destruct_keys,
- End,
- SubWindow, press_a_key = WindowObject,
- MUIA_Window_Title, "Taste ?",
- MUIA_Window_ID , 'TAST',
- WindowContents, VGroup,GroupFrame,
- Child, t = TextObject,
- TextFrame,
- MUIA_Text_Contents,GETSTR(43),
- End,
- End,
- End,
- SubWindow, window= WindowObject,
- MUIA_Window_Title, ASCSEND_TEXT,
- MUIA_Window_ID , 'ASCS',
- WindowContents, VGroup,
- Child,HGroup,
- MUIA_Group_SameSize,TRUE,
- Child, VGroup,GroupFrameT("Hotkeys & Files"),
- Child,VGroup,
- Child, key_lv = ListviewObject,
- ReadListFrame,
- MUIA_Listview_Input,TRUE,
- MUIA_Listview_List, key_list = ListObject,
- MUIA_List_ConstructHook, &construct_keys,
- MUIA_List_DestructHook, &destruct_keys,
- MUIA_List_CompareHook, &compare_keys,
- MUIA_List_DisplayHook, &display_keys,
- End,
- End,
- Child, VGroup, GroupFrame,
- Child, ColGroup(3),
- Child, KeyLabel2("Hotkey:",'y'),
- Child, newkeystring = KeyString(0,STRMAXLEN,'y'),
- Child, popkey_button = PopButton(MUII_PopUp),
- End,
- Child,ColGroup(2),
- Child, KeyLabel2(GETSTR(21),'d'),
- Child, popfile = PopaslObject,
- MUIA_Popstring_String, filestring = KeyString(0,STRMAXLEN,'d'),
- MUIA_Popstring_Button, popfilebutton = PopButton(MUII_PopFile),
- ASLFR_TitleText, GETSTR(6),
- End,
- End,
- Child,VGroup,
- Child,HGroup,
- Child, edit_button = KeyButton(GETSTR(22),'r'),
- Child, edit_popup = PopaslObject,
- MUIA_Popstring_String, edit_string = KeyString(0,STRMAXLEN,'i'),
- MUIA_Popstring_Button, edit_popup = PopButton(MUII_PopFile),
- ASLFR_TitleText, GETSTR(6),
- End,
- End,
- Child,HGroup,
- Child, newkey = KeyButton(GETSTR(23),'n'),
- Child, delkey = KeyButton(GETSTR(24),'e'),
- End,
- End,
- End,
- End,
- End,
- Child,VGroup,
- Child, VGroup, GroupFrameT(GETSTR(34)),
- Child,ColGroup(3),
- Child, Label2(GETSTR(35)),
- Child, rec_start = String("",STRMAXLEN),
- Child, auto_recstart = PopButton(MUII_PopUp),
- Child, Label2(GETSTR(36)),
- Child, rec_stop = String("",STRMAXLEN),
- Child, auto_recstop = PopButton(MUII_PopUp),
- End,
- Child,ColGroup(2),
- Child, Label2(GETSTR(37)),
- Child, pop_recfile = PopaslObject,
- MUIA_Popstring_String, rec_file = KeyString(0,STRMAXLEN,'r'),
- MUIA_Popstring_Button, PopButton(MUII_PopFile),
- ASLFR_TitleText, GETSTR(6),
- End,
- End,
- Child, edit_recfile = ButtonObject(GETSTR(22)),
- Child,ColGroup(2),
- Child, Label2(GETSTR(38)),
- Child, rec_min_delay = IntegerObject("25",4),
- Child, Label2(GETSTR(39)),
- Child, rec_handler_pri = IntegerObject("60",3),
- End,
- Child, ColGroup(3),
- Child, Label2(GETSTR(42)),
- Child, rec_max = IntegerObject("0",10),
- Child, rec_max_on = CheckMark(FALSE),
- End,
- Child,ColGroup(4),
- Child, Label2(GETSTR(40)),
- Child, rec_include_mb = CheckMark(TRUE),
- Child, Label2(GETSTR(41)),
- Child, rec_include_delay = CheckMark(TRUE),
- End,
- End,
- End,
- Child,HGroup,GroupFrameT(GETSTR(25)),
- Child, VGroup,
- Child, ColGroup(3),
- Child,Label2("\33uF\33nilerequester"),
- Child,filerequest_string = KeyString("",KEYLEN,'f'),
- Child,autofilereqkey = PopButton(MUII_PopUp),
- Child,Label2("\33uS\33ntopkey"),
- Child,stop_string = KeyString("",KEYLEN,'s'),
- Child,autostopkey = PopButton(MUII_PopUp),
- Child,Label2("\33uI\33nnfo"),
- Child,info_string = KeyString("",KEYLEN,'i'),
- Child,autoinfokey = PopButton(MUII_PopUp),
- Child,Label2("\33uC\33nX_Popkey"),
- Child,popup_string = KeyString("",KEYLEN,'c'),
- Child,autopopkey = PopButton(MUII_PopUp),
- End,
- Child,VGroup,GroupFrameT(GETSTR(26)),
- Child,ColGroup(2),
- Child,Label2(GETSTR(27)),
- Child,delay_int = MyKeyInteger(KEYLEN,'z'),
- Child,Label2(GETSTR(28)),
- Child,delaychar_int = MyKeyInteger(KEYLEN,'h'),
- End,
- End,
- End,
- End,
- End,
- End,
- End,
- End;
- /******************************************************************/
- /* Objekte erstellt (oda eben nich) */
- /******************************************************************/
-
- if(!app)fail(NULL);
- Load_from_icon(argc,argv);
- if(!init_recorder())fail(app);
- /******************************************************************/
- /* Methoden */
- /******************************************************************/
- /* Fenster schliessen */
- /******************************************************************/
- DoMethod(window,MUIM_Notify,MUIA_Window_CloseRequest,TRUE,app,2,MUIM_Application_ReturnID,ID_CLOSEWD);
-
- /*******************************************************************/
- /* Die ganzen String & Integergadgets */
- /*******************************************************************/
-
- DoMethod(filerequest_string,MUIM_Notify,MUIA_String_Acknowledge,
- MUIV_EveryTime,app,2,MUIM_Application_ReturnID,ID_CHANGE_FILEREQ);
- DoMethod(stop_string,MUIM_Notify,MUIA_String_Acknowledge,
- MUIV_EveryTime,app,2,MUIM_Application_ReturnID,ID_CHANGE_STOPKEY);
- DoMethod(info_string,MUIM_Notify,MUIA_String_Acknowledge,
- MUIV_EveryTime,app,2,MUIM_Application_ReturnID,ID_CHANGE_INFOREQ);
- DoMethod(popup_string,MUIM_Notify,MUIA_String_Acknowledge,
- MUIV_EveryTime,app,2,MUIM_Application_ReturnID,ID_CHANGE_POPKEY);
- DoMethod(rec_start,MUIM_Notify,MUIA_String_Acknowledge,
- MUIV_EveryTime,app,2,MUIM_Application_ReturnID,ID_CHANGE_RECSTART);
- DoMethod(rec_stop,MUIM_Notify,MUIA_String_Acknowledge,
- MUIV_EveryTime,app,2,MUIM_Application_ReturnID,ID_CHANGE_RECSTOP);
- DoMethod(rec_handler_pri,MUIM_Notify,MUIA_String_Acknowledge,
- MUIV_EveryTime,app,2,MUIM_Application_ReturnID,ID_CHANGE_HANDLER_PRI);
-
- DoMethod(auto_recstart,MUIM_Notify,MUIA_Pressed,FALSE,
- app,2,MUIM_Application_ReturnID,ID_AUTORECSTART);
-
- DoMethod(auto_recstop,MUIM_Notify,MUIA_Pressed,FALSE,
- app,2,MUIM_Application_ReturnID,ID_AUTORECSTOP);
-
- DoMethod(popkey_button,MUIM_Notify,MUIA_Pressed,FALSE,
- app,2,MUIM_Application_ReturnID,ID_AUTOHOTKEY);
-
- DoMethod(autostopkey,MUIM_Notify,MUIA_Pressed,FALSE,
- app,2,MUIM_Application_ReturnID,ID_AUTOSTOPKEY);
-
- DoMethod(autofilereqkey,MUIM_Notify,MUIA_Pressed,FALSE,
- app,2,MUIM_Application_ReturnID,ID_AUTOFILEREQKEY);
-
- DoMethod(autoinfokey,MUIM_Notify,MUIA_Pressed,FALSE,
- app,2,MUIM_Application_ReturnID,ID_AUTOINFOKEY);
-
- DoMethod(autopopkey,MUIM_Notify,MUIA_Pressed,FALSE,
- app,2,MUIM_Application_ReturnID,ID_AUTOPOPKEY);
-
- /******************************************************************/
- /* die Fileliste */
- /******************************************************************/
-
-
- DoMethod(newkey,MUIM_Notify,MUIA_Pressed,FALSE,
- app,2,MUIM_Application_ReturnID,ID_INSERTFILE);
-
-
- DoMethod(key_list,MUIM_Notify,MUIA_List_Active,MUIV_EveryTime,
- app,2,MUIM_Application_ReturnID,ID_FILESELECT);
-
-
- DoMethod(delkey,MUIM_Notify,MUIA_Pressed,FALSE,
- key_list,2,MUIM_List_Remove,MUIV_List_Remove_Active);
-
- /******************************************************************/
- /* popobject */
- /*************/
-
- DoMethod(window,MUIM_Window_SetCycleChain,
- key_lv,newkeystring,popkey_button,filestring,popfilebutton,newkey,
- rec_start,rec_start,auto_recstart,rec_stop,auto_recstop,
- rec_file,pop_recfile,edit_recfile,rec_min_delay,rec_handler_pri,
- rec_max,rec_max_on,rec_include_mb,rec_include_delay,
- filerequest_string,autofilereqkey,stop_string,autostopkey,
- info_string,autoinfokey,popup_string,autopopkey,
- delay_int,delaychar_int,
- NULL);
-
- set(window,MUIA_Window_ActiveObject,key_lv);
- /******************************************************************/
- /* Grummel.........vagesslich werd ich 8((((( */
- /******************************************************************/
-
- DoMethod(app,MUIM_Notify,MUIA_Application_DoubleStart,MUIV_EveryTime,
- app,2,MUIM_Application_ReturnID,ID_DOUBLESTART);
-
- DoMethod(edit_button, MUIM_Notify,MUIA_Pressed,FALSE,
- app,2,MUIM_Application_ReturnID,ID_EDITFILE);
-
- DoMethod(edit_recfile, MUIM_Notify,MUIA_Pressed,FALSE,
- app,2,MUIM_Application_ReturnID,ID_EDIT_RECFILE);
-
-
- /******************************************************************/
- /* muss auch sein....;-) */
- /******************************************************************/
-
- ShowWDTitle();
- while (running)
- {
- switch (DoMethod(app,MUIM_Application_Input,&signals))
- {
- case ID_CLOSEWD : CLOSEWD_MACRO;
- break;
- case ID_QUIT_SILENT : running = FALSE;
- break;
- case ID_LOAD : Load_from_icon(argc,argv);
- break;
- case ID_SAVE : Save_to_icon();
- break;
- case MUIV_Application_ReturnID_Quit :
- case ID_QUIT : {
- ULONG o;
- get(window,MUIA_Window_Open,&o);
- if(o)
- {
- if(MUI_RequestA(app,NULL,0,NULL,GETSTR(29),
- GETSTR(30),NULL) != 0)running = FALSE;
- }
- else running = FALSE;
- }
- break;
- case ID_INFO : MUI_RequestA(app,NULL,0,NULL,GETSTR(31),"\33c" ASCSEND_VERSION "\n FREEWARE by Lunqual%%MAB@wsb.freinet.de\n",NULL);
- break;
- case ID_CHANGE_POPKEY : {
- UBYTE *str;
- get(popup_string,MUIA_String_Contents,&str);
- ChangeKey(special_list,str,NULL,CXID_POPUP,MODE_CHANGE);
- ShowWDTitle();
- }
- break;
- case ID_CHANGE_STOPKEY : {
- UBYTE *str;
- get(stop_string,MUIA_String_Contents,&str);
- ChangeKey(special_list,str,NULL,CXID_STOP,MODE_CHANGE);
- }
- break;
- case ID_CHANGE_FILEREQ : {
- UBYTE *str;
- get(filerequest_string,MUIA_String_Contents,&str);
- ChangeKey(special_list,str,NULL,CXID_FILEREQ,MODE_CHANGE);
- }
- break;
- case ID_CHANGE_INFOREQ : {
- UBYTE *str;
- get(info_string,MUIA_String_Contents,&str);
- ChangeKey(special_list,str,NULL,CXID_INFO,MODE_CHANGE);
- }
- break;
- case ID_CHANGE_RECSTART : {
- UBYTE *str;
- get(rec_start,MUIA_String_Contents,&str);
- ChangeKey(special_list,str,NULL,CXID_RECSTART,MODE_CHANGE);
- }
- break;
- case ID_CHANGE_RECSTOP : {
- UBYTE *str;
- get(rec_stop,MUIA_String_Contents,&str);
- ChangeKey(special_list,str,NULL,CXID_RECSTOP,MODE_CHANGE);
- }
- break;
- case ID_INSERTFILE : {
- UBYTE *key,*file;
- get(newkeystring,MUIA_String_Contents,&key);
- get(filestring,MUIA_String_Contents,&file);
- if(*file && *key)
- {
- struct hotkey *k;
- if(k = FindEntryKey(key_list,key))
- {
- strcpy(k->h_filename,file);
- }
- else
- ChangeKey(key_list,key,file,NextID,MODE_CHANGE);
- }
- }
- break;
- case ID_FILESELECT : {
- struct hotkey *key;
- ULONG n;
- get(key_list,MUIA_List_Active,&n);
- if(key = FindEntryN(key_list,n))
- {
- set(newkeystring,MUIA_String_Contents,key->h_description);
- set(filestring, MUIA_String_Contents,key->h_filename);
- }
- }
- break;
- case ID_OPENWD : OPENWD_MACRO;
- break;
- case ID_FILEREQ : {
- ULONG o;
- get(window,MUIA_Window_Open,&o);
- if(!o)
- {
- UBYTE filename[STRMAXLEN];
- struct Window *active_wd;
- active_wd = IntuitionBase->ActiveWindow;
- if(!from_inside)
- {
- if(showrequest())
- {
- strncpy(filename,requestpath,STRMAXLEN);
- AddPart(filename,requestfile,STRMAXLEN);
- ScreenToFront(active_wd->WScreen);
- ActivateWindow(active_wd);
- if(!Sendfile(filename,GET_A_FILE))DoMethod(app,MUIM_Application_ReturnID,ID_QUIT_SILENT);
- }
- }
- }
- }
- break;
- case ID_DOUBLESTART : OPENWD_MACRO;
- break;
- case ID_RECSTART : {
- ULONG o;
- LONG n;
- get(window,MUIA_Window_Open,&o);
- get(rec_max,MUIA_String_Integer,&n);
- if(!o)rec_start_f((n + 1));
- }
- break;
- case ID_RECSTOP : {
- rec_stop_f(NULL);
- }
- break;
- case ID_EDITFILE : {
- UBYTE *o;
- get(filestring,MUIA_String_Contents,&o);
- editfile(o);
- }
- break;
- case ID_EDIT_RECFILE :{
- UBYTE *o;
- get(rec_file,MUIA_String_Contents,&o);
- editfile(o);
- }
- break;
- case ID_CHANGE_HANDLER_PRI : exit_recorder();
- init_recorder();
- break;
- case ID_AUTORECSTART : set(press_a_key,MUIA_Window_Open,TRUE);
- from_main = TRUE;
- from_main_object = rec_start;
- rec_start_f(1);
- break;
- case ID_AUTORECSTOP : set(press_a_key,MUIA_Window_Open,TRUE);
- from_main = TRUE;
- from_main_object = rec_stop;
- rec_start_f(1);
- break;
- case ID_AUTOHOTKEY : set(press_a_key,MUIA_Window_Open,TRUE);
- from_main = TRUE;
- from_main_object = newkeystring;
- rec_start_f(1);
- break;
- case ID_AUTOFILEREQKEY : set(press_a_key,MUIA_Window_Open,TRUE);
- from_main = TRUE;
- from_main_object = filerequest_string;
- rec_start_f(1);
- break;
-
- case ID_AUTOPOPKEY : set(press_a_key,MUIA_Window_Open,TRUE);
- from_main = TRUE;
- from_main_object = popup_string;
- rec_start_f(1);
- break;
- case ID_AUTOSTOPKEY : set(press_a_key,MUIA_Window_Open,TRUE);
- from_main = TRUE;
- from_main_object = stop_string;
- rec_start_f(1);
- break;
-
- case ID_AUTOINFOKEY : set(press_a_key,MUIA_Window_Open,TRUE);
- from_main = TRUE;
- from_main_object = info_string;
- rec_start_f(1);
- break;
- default : break;
- }
- if (running && signals)
- {
- ULONG sgs;
- sgs = Wait(signals | (1L << SigBit));
- if(sgs & (1L << SigBit))
- {
- if(from_main)
- {
- FILE *file;
- UBYTE buffer[STRMAXLEN];
- rec_stop_f("ram:ascs.key.tmp");
- from_main = FALSE;
- set(press_a_key,MUIA_Window_Open,FALSE);
- if(file = fopen("ram:ascs.key.tmp","r"))
- {
- fgets(buffer,STRMAXLEN,file);
- if(from_main_object)
- {
- UBYTE *p = buffer;
- if(*buffer == '<')
- {
- p++;
- *(buffer + strlen(buffer) - 1 ) = 0;
- }
- set(from_main_object,MUIA_String_Contents,p);
- if(from_main_object == filerequest_string) ChangeKey(special_list,p,NULL,CXID_FILEREQ,MODE_CHANGE);
- if(from_main_object == popup_string) {ChangeKey(special_list,p,NULL,CXID_POPUP,MODE_CHANGE);
- ShowWDTitle();}
- if(from_main_object == stop_string) ChangeKey(special_list,p,NULL,CXID_STOP,MODE_CHANGE);
- if(from_main_object == info_string) ChangeKey(special_list,p,NULL,CXID_INFO,MODE_CHANGE);
- if(from_main_object == rec_start) ChangeKey(special_list,p,NULL,CXID_RECSTART,MODE_CHANGE);
- if(from_main_object == rec_stop) ChangeKey(special_list,p,NULL,CXID_RECSTOP,MODE_CHANGE);
- from_main_object = NULL;
- }
- fclose(file);
- }
- }
- else
- {
- rec_stop_f(NULL);
- DisplayBeep(0);
- }
- }
- }
- }
- CLOSEWD_MACRO;
- fail(app);
- }
-
- /*******************************************************************/
- /* Icon-Tooltypes laden */
- /*******************************************************************/
-
- void __regargs Load_from_icon(int argc, char **argv)
- {
- char **tooltypes = ArgArrayInit(argc,argv);
- struct MsgPort *port = NULL;
- CxObj *broker = NULL;
- ULONG i = 0;
- BOOL end = FALSE;
- get(app,MUIA_Application_BrokerPort,&port);
- get(app,MUIA_Application_Broker ,&broker);
- if(port && broker)
- {
- DoMethod(special_list,MUIM_List_Clear);
- DoMethod(key_list,MUIM_List_Clear);
- tooltypes = ArgArrayInit(argc,argv);
- /*******************************/
- /* popkey */
- /*******************************/
- ChangeKey(special_list,ArgString(tooltypes,"CX_POPKEY","control alt a"),NULL,CXID_POPUP,MODE_NEW);
- set(popup_string,MUIA_String_Contents,insert_key->h_description);
- /*******************************/
- /* infokey */
- /*******************************/
- ChangeKey(special_list,ArgString(tooltypes,"INFOKEY","control alt i"),NULL,CXID_INFO,MODE_NEW);
- set(info_string,MUIA_String_Contents,insert_key->h_description);
- /*******************************/
- /* filerequester */
- /*******************************/
- ChangeKey(special_list,ArgString(tooltypes,"REQUESTKEY","control alt r"),NULL,CXID_FILEREQ,MODE_NEW);
- set(filerequest_string,MUIA_String_Contents,insert_key->h_description);
- /*******************************/
- /* stopkey */
- /*******************************/
- ChangeKey(special_list,ArgString(tooltypes,"STOPKEY","control alt q"),NULL,CXID_STOP,MODE_NEW);
- set(stop_string,MUIA_String_Contents,insert_key->h_description);
- /*******************************/
- /* recstart */
- /*******************************/
- ChangeKey(special_list,ArgString(tooltypes,"RECSTARTKEY","control alt 8"),NULL,CXID_RECSTART,MODE_NEW);
- set(rec_start,MUIA_String_Contents,insert_key->h_description);
- /*******************************/
- /* recstop */
- /*******************************/
- ChangeKey(special_list,ArgString(tooltypes,"RECSTOPKEY","control alt 9"),NULL,CXID_RECSTOP,MODE_NEW);
- set(rec_stop,MUIA_String_Contents,insert_key->h_description);
- /*******************************/
- /* filerequester */
- /*******************************/
- strcpy(requestpath,ArgString(tooltypes,"REQPATH",""));
- strcpy(requestfile,ArgString(tooltypes,"REQFILE",""));
- set(edit_string,MUIA_String_Contents,ArgString(tooltypes,"EDITOR","GoldEd"));
- set(rec_file,MUIA_String_Contents,ArgString(tooltypes,"RECFILE","ram:ascs_rec.0"));
- for(;!end;i++)
- {
- UBYTE desc[KEYLEN];
- UBYTE file[KEYLEN];
- sprintf(desc,"HOTKEY%ld",i);
- sprintf(file, "FILE%ld", i);
- if(ArgString(tooltypes,desc,NULL))
- {
- if(ArgString(tooltypes,file,NULL))
- {
- ChangeKey(key_list,ArgString(tooltypes,desc,NULL),ArgString(tooltypes,file,NULL),NextID,MODE_NEW);
- }
- }
- else end = TRUE;
- }
- }
- set(delay_int,MUIA_String_Integer, ArgInt(tooltypes,"DELAY",12));
- set(delaychar_int,MUIA_String_Integer, ArgInt(tooltypes,"DELAYCHAR",0));
- set(rec_max,MUIA_String_Integer, ArgInt(tooltypes,"REC_MAXCHAR",0));
- set(rec_min_delay,MUIA_String_Integer, ArgInt(tooltypes,"MIN_DELAY",25));
- set(rec_handler_pri,MUIA_String_Integer, ArgInt(tooltypes,"HANDLER_PRIORITY",60));
- if(!stricmp(ArgString(tooltypes,"INCLUDE_MB","NO"),"YES"))
- set(rec_include_mb,MUIA_Selected,TRUE);
- else
- set(rec_include_mb,MUIA_Selected,FALSE);
- if(!stricmp(ArgString(tooltypes,"INCLUDE_DELAY","NO"),"YES"))
- set(rec_include_delay,MUIA_Selected,TRUE);
- else
- set(rec_include_delay,MUIA_Selected,FALSE);
- if(!stricmp(ArgString(tooltypes,"REC_MAX_ON","NO"),"YES"))
- set(rec_max_on,MUIA_Selected,TRUE);
- else
- set(rec_max_on,MUIA_Selected,FALSE);
-
- if(!stricmp(ArgString(tooltypes,"CX_POPUP","no"),"yes"))OPENWD_MACRO;
- if(tooltypes)ArgArrayDone();
- }
-
- /*********************************************************************/
- /* Hook-Funktionen */
- /*********************************************************************/
-
- LONG __asm __saveds construct_key_func( register __a0 struct Hook *hook,register __a2 APTR m_pool,register __a1 struct hotkey *key)
- {
- struct hotkey *insert;
- struct MsgPort *port = NULL;
- CxObj *broker;
- UBYTE *p;
- get(app,MUIA_Application_BrokerPort,&port);
- get(app,MUIA_Application_Broker,&broker);
- p = key->h_description + strlen(key->h_description) - 1;
- while(*p == ' '){*p = 0;--p;}
- if(insert = (struct hotkey *)AllocVec(sizeof(struct hotkey),MEMF_PUBLIC | MEMF_CLEAR))
- {
- strncpy(insert->h_description,key->h_description,KEYLEN);
- strncpy(insert->h_filename,key->h_filename,KEYLEN);
- insert->h_id = key->h_id;
- if(insert->h_key = HotKey(insert->h_description,port,insert->h_id))
- {
- AttachCxObj(broker,insert->h_key);
- NextID++;
- return (LONG)insert;
- }
- else
- FreeVec(insert);
- }
- return (NULL);
- }
-
- void __asm __saveds destruct_key_func( register __a0 struct Hook *hook,register __a2 APTR m_pool,register __a1 struct hotkey *key)
- {
- if(key)
- {
- if(key->h_key)DeleteCxObjAll(key->h_key);
- FreeVec(key);
- }
- }
-
- LONG __asm __saveds display_key_func(register __a0 struct Hook *hook,register __a2 UBYTE **array,register __a1 struct hotkey *key)
- {
- strcpy(displayline,key->h_description);
- *array = displayline;
- return (0);
- }
-
- LONG __asm __saveds cxmsg_broker_func(register __a2 APTR app,register __a1 CxMsg *msg)
- {
- LONG id,type;
- CxObj *broker;
- id = CxMsgID(msg);
- type = CxMsgType(msg);
- get(app,MUIA_Application_Broker,&broker);
- switch(type)
- {
- case CXM_IEVENT : switch(id)
- {
- case CXID_STOP : DoMethod(app,MUIM_Application_ReturnID,ID_STOPKEY);
- break;
- case CXID_INFO : if(MUI_RequestA(app,NULL,0,NULL,GETSTR(32),"\33c" ASCSEND_VERSION "\n FREEWARE by Lunqual%%MAB@wsb.freinet.de\n",NULL) != 0)
- DoMethod(app,MUIM_Application_ReturnID,ID_QUIT);
- break;
- case CXID_POPUP : OPENWD_MACRO;
- DoMethod(app,MUIM_Application_ReturnID,ID_STOPKEY);
- break;
- case CXID_FILEREQ : DoMethod(app,MUIM_Application_ReturnID,ID_FILEREQ);
- break;
- case CXID_RECSTART :
- {
- LONG n;
- get(rec_max,MUIA_String_Integer,&n);
- rec_start_f((n + 1));
- }
- break;
- case CXID_RECSTOP : {
- rec_stop_f(NULL);
- }
- break;
- default : {
- struct hotkey *key;
- if(key = FindEntry(key_list,id))
- {
- if(!from_inside)
- {
- if(!Sendfile(key->h_filename,GET_A_FILE))
- DoMethod(app,MUIM_Application_ReturnID,ID_QUIT_SILENT);
- }
- }
- }
- break;
- }
- break;
- case CXM_COMMAND : switch(id)
- {
- case CXCMD_DISABLE : ActivateCxObj(broker,0L);
- set(app,MUIA_Application_Iconified,TRUE);
- break;
- case CXCMD_ENABLE : ActivateCxObj(broker,1L);
- set(app,MUIA_Application_Iconified,FALSE);
- break;
- case CXCMD_KILL : DoMethod(app,MUIM_Application_ReturnID,ID_QUIT);
- break;
- case CXCMD_UNIQUE :
- case CXCMD_APPEAR : OPENWD_MACRO;
- break;
- case CXCMD_DISAPPEAR : CLOSEWD_MACRO;
- break;
-
- default : break;
- }
- break;
- default : break;
- }
- return 0;
- }
-
-
- LONG __asm __saveds compare_func(register __a0 struct Hook *hook,register __a1 struct hotkey *h1,register __a2 struct hotkey *h2)
- {
- return (h1->h_id == h2->h_id) ? 0 : (h1->h_id < h2->h_id) ? 1 : -1;
- }
-
- /*****************************************************************/
- /* Arexx-Hook-Funktionen */
- /*****************************************************************/
-
- LONG __asm __saveds rx_send_func(register __a1 UBYTE **parms)
- {
- ULONG o;
- get(window,MUIA_Window_Open,&o);
- if((!o) && (!from_inside))
- {
- if(!Sendfile(*parms,GET_A_FILE)) DoMethod(app,MUIM_Application_ReturnID,ID_QUIT_SILENT);
- }
- return 0;
- }
-
- LONG __asm __saveds rx_activate_func(register __a1 UBYTE **parms)
- {
- LONG rc = RC_ERROR;
- ULONG i_lock;
- struct Window *wd;
- struct Screen *sc;
- int end = FALSE;
- i_lock = LockIBase(0);
- sc = IntuitionBase->FirstScreen;
- while(sc && !end)
- {
- wd = sc->FirstWindow;
- while(wd && !end)
- {
- if(!strnicmp(*parms,wd->Title,strlen(*parms)))
- {
- end = TRUE;
- rc = RC_OK;
- UnlockIBase(i_lock);i_lock = 0;
- ScreenToFront(sc);
- ActivateWindow(wd);
- }
- wd = wd->NextWindow;
- }
- sc = sc->NextScreen;
- }
- if(i_lock)UnlockIBase(i_lock);
- return rc;
- }
-
- LONG __asm __saveds rx_activate_screen_func(register __a1 UBYTE **parms)
- {
- LONG rc = RC_ERROR;
- ULONG i_lock;
- struct Window *wd;
- struct Screen *sc;
- int end = FALSE;
- i_lock = LockIBase(0);
- sc = IntuitionBase->FirstScreen;
- while(sc && !end)
- {
- if(!strnicmp(*parms,sc->Title,strlen(*parms)))
- {
- end = TRUE;
- ScreenToFront(sc);
- if(wd = sc->FirstWindow)
- {
- rc = RC_OK;
- }
- }
- sc = sc->NextScreen;
- }
- UnlockIBase(i_lock);
- if(rc == RC_OK) ActivateWindow(wd);
- return rc;
- }
-
- LONG __asm __saveds rx_setkey_func(register __a1 UBYTE **parms)
- {
- UBYTE **p;
- struct hotkey *k;
- UBYTE key[STRMAXLEN];
- *key = 0;
- p = (UBYTE **)parms[1];
- while(*p)
- {
- strcat(key,*p);strcat(key," ");
- p++;
- }
- *(key + (KEYLEN-1)) = 0;
- set(newkeystring,MUIA_String_Contents,key);
- set(filestring ,MUIA_String_Contents,parms[0]);
- if(k = FindEntryKey(key_list,key))
- {
- strcpy(k->h_filename,parms[0]);
- }
- else
- ChangeKey(key_list,key,parms[0],NextID,MODE_CHANGE);
- return 0;
- }
-
- LONG __asm __saveds rx_remkey_func(register __a1 UBYTE **parms)
- {
- UBYTE **p;
- struct hotkey *k;
- UBYTE key[STRMAXLEN];
- *key = 0;
- p = (UBYTE **)parms[0];
- while(*p)
- {
- strcat(key,*p);strcat(key," ");
- p++;
- }
- *(key + (KEYLEN-1)) = 0;
- if(k = FindEntryKey(key_list,key))
- {
- ChangeKey(key_list,NULL,NULL,k->h_id,MODE_CHANGE);
- }
- return (0);
- }
-
- LONG __asm __saveds rx_remall_func(register __a1 UBYTE **parms)
- {
- DoMethod(key_list,MUIM_List_Clear);
- return (0);
- }
-
- LONG __asm __saveds rx_set_func(register __a1 UBYTE **parms)
- {
- UBYTE **p;
- UBYTE key[STRMAXLEN];
- LONG id = -1;
- APTR obj;
- *key = 0;
- p = (UBYTE **)parms[6];
- while(*p)
- {
- strcat(key,*p);strcat(key," ");
- p++;
- }
- *(key + (KEYLEN-1)) = 0;
- if(parms[0]){id = CXID_POPUP ;obj = popup_string;}
- if(parms[1]){id = CXID_FILEREQ ;obj = filerequest_string;}
- if(parms[2]){id = CXID_INFO ;obj = info_string;}
- if(parms[3]){id = CXID_STOP ;obj = stop_string;}
- if(parms[4]){id = CXID_RECSTART;obj = rec_start;}
- if(parms[5]){id = CXID_RECSTOP ;obj = rec_stop;}
- if(id != -1)
- {
- ChangeKey(special_list,key,NULL,id,MODE_CHANGE);
- set(obj,MUIA_String_Contents,key);
- }
- return (0);
- }
-
- LONG __asm __saveds rx_delay_func(register __a1 LONG **parms)
- {
- set(delay_int,MUIA_String_Integer,*parms[0]);
- return (0);
- }
-
- LONG __asm __saveds rx_delaychar_func(register __a1 LONG **parms)
- {
- set(delaychar_int,MUIA_String_Integer,*parms[0]);
- return (0);
- }
-
- LONG __asm __saveds rx_sendstring_func(register __a1 LONG **parms)
- {
- UBYTE **p;
- UBYTE string[512];
- p = (UBYTE **)parms[0];
- *string = 0;
- while(*p)
- {
- strcat(string,*p);strcat(string," ");
- p++;
- }
- string[strlen(string)] = 0;
- Sendfile(string,GET_A_STRING);
- return (0);
- }
-
- LONG __asm __saveds rx_recfile_func(register __a1 LONG **parms)
- {
- set(rec_file,MUIA_String_Contents,*parms[0]);
- return(0);
- }
-
- LONG __asm __saveds rx_rec_opts_func(register __a1 LONG **parms)
- {
- if(parms[0])set(rec_min_delay,MUIA_String_Integer,*parms[0]);
- if(parms[1])
- {
- set(rec_handler_pri,MUIA_String_Integer,*parms[1]);
- exit_recorder();
- init_recorder();
- }
- if(parms[2])set(rec_include_mb,MUIA_Selected,TRUE);
- else set(rec_include_mb,MUIA_Selected,FALSE);
- if(parms[3])set(rec_include_delay,MUIA_Selected,TRUE);
- else set(rec_include_delay,MUIA_Selected,FALSE);
- if(parms[4])set(rec_max,MUIA_String_Integer,*parms[4]);
- if(parms[5])set(rec_max_on,MUIA_Selected,TRUE);
- else set(rec_max_on,MUIA_Selected,FALSE);
- return(0);
- }
-
- /*********************************************************************/
- /* sonstiger Krempel */
- /*********************************************************************/
-
- struct hotkey __regargs *FindEntry(APTR list,ULONG id)
- {
- struct hotkey *rc = NULL;
- ULONG i;
- for(i=0;;i++)
- {
- DoMethod(list,MUIM_List_GetEntry,i,&rc);
- if(!rc)return NULL;
- if(rc->h_id == id)return rc;
- }
- }
-
- LONG __regargs FindEntryNumber(APTR list,ULONG id)
- {
- struct hotkey *rc = NULL;
- LONG i;
- for(i=0;;i++)
- {
- DoMethod(list,MUIM_List_GetEntry,i,&rc);
- if(!rc)return -1;
- if(rc->h_id == id)return i;
- }
- }
-
- struct hotkey __regargs *FindEntryN(APTR list,ULONG num)
- {
- struct hotkey *rc = NULL;
- LONG i;
- for(i=0;i <= num;i++)
- {
- DoMethod(list,MUIM_List_GetEntry,i,&rc);
- if(!rc)return (NULL);
- }
- return (rc);
- }
-
-
- struct hotkey __regargs *FindEntryKey(APTR list,UBYTE *key)
- {
- struct hotkey *rc = NULL;
- LONG i;
- for(i=0;;i++)
- {
- DoMethod(list,MUIM_List_GetEntry,i,&rc);
- if(!rc)return NULL;
- if(!strnicmp(key,rc->h_description,strlen(rc->h_description)))return rc;
- }
- }
-
- void ShowWDTitle()
- {
- struct hotkey *key;
- if(key = FindEntry(special_list,CXID_POPUP))
- {
- strcpy(wtitle,"ASCII-SEND: Hotkey=");
- strcat(wtitle,key->h_description);
- }
- set(window,MUIA_Window_Title,&wtitle);
- }
-
- void __regargs ChangeKey(APTR list,UBYTE *key,UBYTE *file,ULONG id,ULONG mode)
- {
- LONG rkey;
- if(mode == MODE_CHANGE)
- {
- if((rkey = FindEntryNumber(list,id)) != -1) DoMethod(list,MUIM_List_Remove,rkey);
- }
- if((key == NULL) &&(file == NULL))return;
- memset(insert_key,0,sizeof(struct hotkey));
- strcpy(insert_key->h_description,key);
- if(file) strcpy(insert_key->h_filename,file);
- insert_key->h_id = id;
- DoMethod(list,MUIM_List_Insert,&insert_key,1,MUIV_List_Insert_Bottom);
- }
-
- UBYTE __regargs *makemem(ULONG size)
- {
- return((UBYTE *)AllocVec(size,MEMF_PUBLIC | MEMF_CLEAR));
- }
-
- void releasemem(void *mem)
- {
- FreeVec(mem);
- }
-
- UBYTE __regargs *getfilebuffer(UBYTE *filename,ULONG mode)
- {
- struct FileInfoBlock *fib;
- BPTR lock,fh;
- UBYTE *buffer;
- switch( mode )
- {
- case GET_A_FILE:
- if(lock = Lock(filename,ACCESS_READ))
- {
- if(fib = AllocDosObject(DOS_FIB,TAG_DONE))
- {
- Examine(lock,fib);
- filesize = fib->fib_Size;
- FreeDosObject(DOS_FIB,fib);
- if(buffer = (UBYTE *)makemem(filesize))
- {
- if(fh = OpenFromLock(lock))
- {
- FRead(fh,buffer,filesize,1);
- Close(fh);
- return buffer;
- }
- else UnLock(lock);
- }
- }
- }
- return NULL;
- break;
- case GET_A_STRING :
- filesize = strlen(filename + 1);
- if(buffer = (UBYTE *)makemem(filesize))
- {
- strcpy(buffer,filename);
- return buffer;
- }
- else return NULL;
- break;
- }
- return NULL;
- }
-
- void __regargs freefilebuffer(UBYTE *buffer,ULONG size)
- {
- releasemem(buffer);
- }
-
- BOOL __regargs getnextchar(UBYTE *buffer,UBYTE *where)
- {
- if(filepos >= filesize)return FALSE;
- *where = *(buffer + filepos);
- filepos++;
- return TRUE;
- }
-
- void editfile(UBYTE *name)
- {
- UBYTE line[STRMAXLEN];
- UBYTE *c;
- BPTR in;
- if(in = Open("NIL:",ACCESS_READ))
- {
- get(edit_string,MUIA_String_Contents,&c);
- strcpy(line,c);strcat(line," ");
- strcat(line,name);
- SystemTags(line,SYS_Input,in,SYS_Asynch,TRUE,TAG_DONE);
- }
- }
-
- /*********************************************************************/
- /* Filerequester */
- /*********************************************************************/
-
- int showrequest()
- {
- int ret = FALSE;
- struct FileRequester *FileReq;
- struct Screen *rscreen;
- if(rscreen = LockPubScreen(NULL))ScreenToFront(rscreen);
- FRTags[3].ti_Data = (ULONG)requestpath;
- FRTags[4].ti_Data = (ULONG)requestfile;
- if(FileReq = (struct FileRequester *)MUI_AllocAslRequest(ASL_FileRequest,FRTags))
- {
- if(MUI_AslRequest(FileReq,TAG_DONE))
- {
- ret = TRUE;
- strcpy(requestfile,FileReq->rf_File);
- strcpy(requestpath,FileReq->rf_Dir);
- }
- MUI_FreeAslRequest((APTR)FileReq);
- }
- return ret;
- }
-
-
- /*********************************************************************/
- /* Datei senden */
- /*********************************************************************/
-
- long __regargs Sendfile(UBYTE *filename,ULONG mode)
- {
- int rc = TRUE;
- struct InputEvent *ie;
- UBYTE buffer[STRMAXLEN];
- UBYTE *filebuffer;
- int Ldelay = FALSE;
- ULONG stop = FALSE;
- ULONG v_line;
- ULONG v_z;
- ULONG fpm;
- ULONG brk = IE_COUNT;
- if(!makeIHandler())return rc;
- get(delay_int,MUIA_String_Integer,&v_line);
- get(delaychar_int,MUIA_String_Integer,&v_z);
- from_inside = TRUE;
- filepos = 0;
- if(filebuffer = getfilebuffer(filename,mode))
- {
- while((getnextchar(filebuffer,buffer)) && (!stop))
- {
- *(buffer + 1) = 0;
- switch(*buffer)
- {
- case '\n' : Ldelay = TRUE;
- strcpy(buffer,"\\n");
- break;
- case '\r' : Ldelay = TRUE;
- strcpy(buffer,"\\r");
- break;
- case '\t' : strcpy(buffer,"\\t");
- break;
- case '\\' : fpm = filepos;
- getnextchar(filebuffer,buffer + 1);
- *(buffer + 2) = 0;
- {
- int end = FALSE;
- int p = 2;
- ULONG v;
- if((*(buffer + 1)=='d')||(*(buffer + 1)=='l')||(*(buffer + 1)=='c')||
- (*(buffer + 1)=='n')||(*(buffer + 1)=='r')||(*(buffer + 1)=='t'))
- {
- do
- {
- if( (*(buffer + 1)=='n')||(*(buffer + 1)=='r')||(*(buffer + 1)=='t'))
- {
- end = TRUE;
- }
- else
- {
- getnextchar(filebuffer,buffer + p);
- if(!(isdigit(*(buffer + p))) || (p >= 6))
- {
- end = TRUE;
- *(buffer + p + 1) = 0;
- v = atol(buffer + 2);
- switch(*(buffer + 1))
- {
- case 'd' : Delay(v);
- break;
- case 'l' : v_line = v;
- break;
- case 'c' : v_z = v;
- break;
- default : break;
- }
- *buffer = 0;
- filepos -= 1;
- }
- p++;
- if(p >= (STRMAXLEN - 2))end = TRUE;
- }
- }
- while(!end);
- }
- else
- {
- UBYTE t[2] = {0,0};
- struct InputEvent ev;
- if(*(buffer + 1) == '(')
- {
- getnextchar(filebuffer,buffer + 2);
- getnextchar(filebuffer,buffer + 3);
- getnextchar(filebuffer,buffer + 4);
- getnextchar(filebuffer,buffer + 5);
- if((*(buffer + 3) == 'm')&&(*(buffer + 5)==':'))
- {
- int p = 6;
- int py;
- int end = FALSE;
- while(!end)
- {
- getnextchar(filebuffer,buffer + p);
- if(!(isdigit(*(buffer + p))))
- {
- end = TRUE;
- }
- p++;
- }
- --p;
- if(*(buffer + p) == ',')
- {
- p++;
- py = p;
- end = FALSE;
- while(!end)
- {
- getnextchar(filebuffer,buffer + p);
- if(!(isdigit(*(buffer + p))))
- {
- end = TRUE;
- }
- p++;
- }
- --p;
- if(*(buffer + p) == ')')
- {
- ev.ie_Class = IECLASS_POINTERPOS;
- ev.ie_NextEvent = NULL;
- ev.ie_Qualifier = 0;
- ev.ie_SubClass = 0;
- ev.ie_TimeStamp.tv_secs = 0;
- ev.ie_TimeStamp.tv_micro = 0;
- ev.ie_Y = (WORD)atol(buffer + py);
- ev.ie_X = (WORD)atol(buffer + 6);
- switch(*(buffer + 2))
- {
- case 'l' : if(*(buffer + 4) == 'd')
- ev.ie_Code = IECODE_LBUTTON ;
- else
- ev.ie_Code = IECODE_LBUTTON | IECODE_UP_PREFIX;
- my_AddIEvents(&ev);
- break;
- case 'r' : if(*(buffer + 4) == 'd')
- ev.ie_Code = IECODE_RBUTTON ;
- else
- ev.ie_Code = IECODE_RBUTTON | IECODE_UP_PREFIX;
- my_AddIEvents(&ev);
- break;
- case 'm' : if(*(buffer + 4) == 'd')
- ev.ie_Code = IECODE_MBUTTON ;
- else
- ev.ie_Code = IECODE_MBUTTON | IECODE_UP_PREFIX;
- my_AddIEvents(&ev);
- break;
- }
- *buffer = 0;
- }
- else
- {
- filepos =fpm;
- strcpy(buffer,"\\\\");
- if(ie = InvertString(buffer,NULL))
- {
- my_AddIEvents(ie);
- FreeIEvents(ie);
- *buffer = 0;
- }
- }
- }
- else
- {
- filepos = fpm;
- strcpy(buffer,"\\\\");
- if(ie = InvertString(buffer,NULL))
- {
- my_AddIEvents(ie);
- FreeIEvents(ie);
- *buffer = 0;
- }
- }
- }
- else
- {
- filepos = fpm;
- strcpy(buffer,"\\\\");
- if(ie = InvertString(buffer,NULL))
- {
- my_AddIEvents(ie);
- FreeIEvents(ie);
- *buffer = 0;
- }
- }
- }
- else
- {
- t[0] = *(buffer + 1);
- strcpy(buffer,"\\\\");
- if(ie = InvertString(buffer,NULL))
- {
- my_AddIEvents(ie);
- FreeIEvents(ie);
- }
- }
- strcpy(buffer,t);
- switch(*buffer)
- {
- case '\n' : strcpy(buffer,"\\n");
- break;
- case '\r' : strcpy(buffer,"\\r");
- break;
- case '<' : *buffer = 0;filepos -= 1;
- break;
- }
- }
- }
- break;
- case '<' : {
- int end;
- int p;
- end = FALSE;
- p = 1;
- fpm = filepos;
- do
- {
- getnextchar(filebuffer,buffer + p);
- switch(*(buffer + p))
- {
- case '\r':
- case '\n': if(ie = InvertString("\\<",NULL))
- {
- my_AddIEvents(ie);
- FreeIEvents(ie);
- }
- filepos = fpm;
- *buffer = 0;
- end = TRUE;
- break;
- case '>' : *(buffer + p + 1) = 0;
- if(ie = InvertString(buffer,NULL))
- {
- my_AddIEvents(ie);
- FreeIEvents(ie);
- }
- else
- {
- if(ie = InvertString("\\<",NULL))
- {
- my_AddIEvents(ie);
- FreeIEvents(ie);
- }
- filepos = fpm;
- }
- *buffer = 0;
- end = TRUE;
- break;
- default : break;
- }
- p++;
- if(p >= (STRMAXLEN - 2))end = TRUE;
- }
- while(!end);
- break;
- }
- case '>' : if(ie = InvertString(buffer,NULL))
- {
- my_AddIEvents(ie);
- FreeIEvents(ie);
- }
- strcpy(buffer,"\\>");
- break;
- default : *(buffer + 1) = 0;
- break;
- }
-
- if(ie = InvertString(buffer,NULL))
- {
- --brk;
- if(v_z)Delay(v_z);
- my_AddIEvents(ie);
- FreeIEvents(ie);
- if(Ldelay)
- {
- Delay(v_line);
- Ldelay = FALSE;
- brk = 0;
- }
- if(!brk)
- {
- brk = IE_COUNT;
- switch(DoMethod(app,MUIM_Application_Input,&signals))
- {
- case MUIV_Application_ReturnID_Quit :
- case ID_QUIT : if(MUI_RequestA(app,NULL,0,NULL,"Ja|*Nein","\33cWollen Sie dieses\ngigantische Programm\nwirklich beenden ???",NULL) != 0)
- {
- stop = TRUE;
- rc = FALSE;
- }
- break;
- case ID_INFO : MUI_RequestA(app,NULL,0,NULL,"*Na gut","\33c" ASCSEND_VERSION "\n FREEWARE von Lunqual%%MAB@wsb.freinet.de\n",NULL);
- break;
- case ID_OPENWD : OPENWD_MACRO;
- case ID_STOPKEY : stop = TRUE;
- break;
- default : break;
- }
- }
- }
- }
- freefilebuffer(filebuffer,filesize);
- }
- from_inside=FALSE;
- remIHandler();
- return rc;
- }
-
- /*********************************************************************/
- /* InputHandler Glump */
- /*********************************************************************/
-
- LONG makeIHandler()
- {
- if(s_InputPort = CreateMsgPort())
- {
- if(s_HandlerIO = (struct IOStdReq *)CreateExtIO(s_InputPort,sizeof(struct IOStdReq)))
- {
- if(!(s_device = OpenDevice("input.device",NULL,(struct IORequest *)s_HandlerIO,0L)))
- {
- s_HandlerIO->io_Length = sizeof(struct InputEvent);
- s_HandlerIO->io_Command = IND_WRITEEVENT;
- return(TRUE);
- }
- }
- }
- return (FALSE);
- }
-
- void remIHandler()
- {
- if(s_HandlerIO)
- {
- if(!s_device)CloseDevice((struct IORequest *)s_HandlerIO);
- DeleteExtIO((struct IORequest *)s_HandlerIO);
- s_HandlerIO = NULL;
- }
- if(s_InputPort)
- {
- DeletePort(s_InputPort);
- s_InputPort = NULL;
- }
- }
-
- /*********************************************************************/
- /* MUI init & Fail */
- /*********************************************************************/
-
- void init()
- {
- if (!(MUIMasterBase = OpenLibrary(MUIMASTER_NAME,7L)))fail(NULL);
- LocaleBase = OpenLibrary("locale.library",38);
- ascs_locale = OpenLocale(NULL);
- ascs_catalog = OpenCatalog(ascs_locale,"ascsend.catalog",
- OC_BuiltInLanguage,"deutsch",
- OC_Version,1,TAG_DONE);
- menu_list[0].nm_Label = GETSTR(0);
- menu_list[1].nm_Label = GETSTR(1);
- menu_list[2].nm_Label = GETSTR(2);
- menu_list[4].nm_Label = GETSTR(3);
- menu_list[6].nm_Label = GETSTR(4);
- menu_list[7].nm_Label = GETSTR(5);
- FRTags[0].ti_Data = (ULONG)GETSTR(6);
- }
-
- void __regargs fail(APTR app)
- {
- if (app)
- {
- MUI_DisposeObject(app);
- }
- exit_recorder();
- if(LocaleBase)CloseLibrary(LocaleBase);
- CloseCatalog(ascs_catalog);
- CloseLocale(ascs_locale);
- if (MUIMasterBase)CloseLibrary(MUIMasterBase);
- exit(0);
- }
-
- /**********************************************************************/
-
-
-
-